import pandas as pd
import re
import chardet




class MarkdownTableProcessor:
    def __init__(self, file_path):
        self.file_path = file_path
        self.df = self.parse_markdown_table()
        # self.unique_df = self.create_unique_name_address_table(self.df)

    def parse_markdown_table(self):
        # 读取Markdown文件内容
        with open(self.file_path, 'rb') as file:
            result = chardet.detect(file.read())
        with open(self.file_path, 'r', encoding=result['encoding']) as file:
            markdown_table = file.read()

        # 使用正则表达式找到"#### **表格开始**"和"#### **表格结束**"之间的内容
        markdown_table = re.search(r'#### \*\*Start\*\*(.*?)#### \*\*End\*\*', markdown_table, re.DOTALL).group(1)

        # 使用正则表达式找到表头
        headers = re.search(r'\|(.+)\|', markdown_table).group(1).split('|')

        # 移除表头后的所有空格，并去除第一个和最后一个元素（它们是空字符串）
        headers = [header.strip() for header in headers if header.strip()]

        # 使用正则表达式找到除表头外的所有行
        rows = re.findall(r'\|(.+)\|', markdown_table)[1:]

        # 清理每行数据，去除竖线、空格，并分割成列表
        data = [row.strip().split('|') for row in rows]

        # 移除每行中的空字符串
        data = [list(filter(None, row)) for row in data]

        # 移除第五列的数据
        for row in data:
            if len(row) >= 5:
                del row[4]  # 删除第五列

        # 移除第五个表头
        if len(headers) >= 5:
            del headers[4]

        # 创建DataFrame
        df = pd.DataFrame(data, columns=headers)
        #将第一行清理掉. 避免报错 "0  :----:  -------"
        df.drop(df.index[0], inplace=True)
        
        print(df)
        return df
    
test = MarkdownTableProcessor("C:/Users/ALIENTEK/Desktop/register-ui-friend-by-c/实验用废弃代码/fuck.md")